home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / sysfs.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  4KB  |  183 lines

  1. /*
  2.  * sysfs.h - definitions for the device driver filesystem
  3.  *
  4.  * Copyright (c) 2001,2002 Patrick Mochel
  5.  * Copyright (c) 2004 Silicon Graphics, Inc.
  6.  *
  7.  * Please see Documentation/filesystems/sysfs.txt for more information.
  8.  */
  9.  
  10. #ifndef _SYSFS_H_
  11. #define _SYSFS_H_
  12.  
  13. #include <asm/atomic.h>
  14.  
  15. struct kobject;
  16. struct module;
  17.  
  18. struct attribute {
  19.     char            * name;
  20.     struct module         * owner;
  21.     mode_t            mode;
  22. };
  23.  
  24. struct attribute_group {
  25.     char            * name;
  26.     struct attribute    ** attrs;
  27. };
  28.  
  29.  
  30.  
  31. /**
  32.  * Use these macros to make defining attributes easier. See include/linux/device.h
  33.  * for examples..
  34.  */
  35.  
  36. #define __ATTR(_name,_mode,_show,_store) { \
  37.     .attr = {.name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE },    \
  38.     .show    = _show,                    \
  39.     .store    = _store,                    \
  40. }
  41.  
  42. #define __ATTR_RO(_name) { \
  43.     .attr    = { .name = __stringify(_name), .mode = 0444, .owner = THIS_MODULE },    \
  44.     .show    = _name##_show,    \
  45. }
  46.  
  47. #define __ATTR_NULL { .attr = { .name = NULL } }
  48.  
  49. #define attr_name(_attr) (_attr).attr.name
  50.  
  51. struct vm_area_struct;
  52.  
  53. struct bin_attribute {
  54.     struct attribute    attr;
  55.     size_t            size;
  56.     void            *private;
  57.     ssize_t (*read)(struct kobject *, char *, loff_t, size_t);
  58.     ssize_t (*write)(struct kobject *, char *, loff_t, size_t);
  59.     int (*mmap)(struct kobject *, struct bin_attribute *attr,
  60.             struct vm_area_struct *vma);
  61. };
  62.  
  63. struct sysfs_ops {
  64.     ssize_t    (*show)(struct kobject *, struct attribute *,char *);
  65.     ssize_t    (*store)(struct kobject *,struct attribute *,const char *, size_t);
  66. };
  67.  
  68. struct sysfs_dirent {
  69.     atomic_t        s_count;
  70.     struct list_head    s_sibling;
  71.     struct list_head    s_children;
  72.     void             * s_element;
  73.     int            s_type;
  74.     umode_t            s_mode;
  75.     struct dentry        * s_dentry;
  76. };
  77.  
  78. #define SYSFS_ROOT        0x0001
  79. #define SYSFS_DIR        0x0002
  80. #define SYSFS_KOBJ_ATTR     0x0004
  81. #define SYSFS_KOBJ_BIN_ATTR    0x0008
  82. #define SYSFS_KOBJ_LINK     0x0020
  83. #define SYSFS_NOT_PINNED    (SYSFS_KOBJ_ATTR | SYSFS_KOBJ_BIN_ATTR | SYSFS_KOBJ_LINK)
  84.  
  85. #ifdef CONFIG_SYSFS
  86.  
  87. extern int
  88. sysfs_create_dir(struct kobject *);
  89.  
  90. extern void
  91. sysfs_remove_dir(struct kobject *);
  92.  
  93. extern int
  94. sysfs_rename_dir(struct kobject *, const char *new_name);
  95.  
  96. extern int
  97. sysfs_create_file(struct kobject *, const struct attribute *);
  98.  
  99. extern int
  100. sysfs_update_file(struct kobject *, const struct attribute *);
  101.  
  102. extern void
  103. sysfs_remove_file(struct kobject *, const struct attribute *);
  104.  
  105. extern int 
  106. sysfs_create_link(struct kobject * kobj, struct kobject * target, char * name);
  107.  
  108. extern void
  109. sysfs_remove_link(struct kobject *, char * name);
  110.  
  111. int sysfs_create_bin_file(struct kobject * kobj, struct bin_attribute * attr);
  112. int sysfs_remove_bin_file(struct kobject * kobj, struct bin_attribute * attr);
  113.  
  114. int sysfs_create_group(struct kobject *, const struct attribute_group *);
  115. void sysfs_remove_group(struct kobject *, const struct attribute_group *);
  116.  
  117. #else /* CONFIG_SYSFS */
  118.  
  119. static inline int sysfs_create_dir(struct kobject * k)
  120. {
  121.     return 0;
  122. }
  123.  
  124. static inline void sysfs_remove_dir(struct kobject * k)
  125. {
  126.     ;
  127. }
  128.  
  129. static inline int sysfs_rename_dir(struct kobject * k, const char *new_name)
  130. {
  131.     return 0;
  132. }
  133.  
  134. static inline int sysfs_create_file(struct kobject * k, const struct attribute * a)
  135. {
  136.     return 0;
  137. }
  138.  
  139. static inline int sysfs_update_file(struct kobject * k, const struct attribute * a)
  140. {
  141.     return 0;
  142. }
  143.  
  144. static inline void sysfs_remove_file(struct kobject * k, const struct attribute * a)
  145. {
  146.     ;
  147. }
  148.  
  149. static inline int sysfs_create_link(struct kobject * k, struct kobject * t, char * n)
  150. {
  151.     return 0;
  152. }
  153.  
  154. static inline void sysfs_remove_link(struct kobject * k, char * name)
  155. {
  156.     ;
  157. }
  158.  
  159.  
  160. static inline int sysfs_create_bin_file(struct kobject * k, struct bin_attribute * a)
  161. {
  162.     return 0;
  163. }
  164.  
  165. static inline int sysfs_remove_bin_file(struct kobject * k, struct bin_attribute * a)
  166. {
  167.     return 0;
  168. }
  169.  
  170. static inline int sysfs_create_group(struct kobject * k, const struct attribute_group *g)
  171. {
  172.     return 0;
  173. }
  174.  
  175. static inline void sysfs_remove_group(struct kobject * k, const struct attribute_group * g)
  176. {
  177.     ;
  178. }
  179.  
  180. #endif /* CONFIG_SYSFS */
  181.  
  182. #endif /* _SYSFS_H_ */
  183.